home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Guide / bintree.e < prev    next >
Text File  |  1994-12-13  |  963b  |  49 lines

  1. OBJECT tree
  2.   data
  3.   left:PTR TO tree, right:PTR TO tree
  4. ENDOBJECT
  5.  
  6. PROC new_set(int)
  7.   DEF root:PTR TO tree
  8.   NEW root
  9.   root.data:=int
  10. ENDPROC root
  11.  
  12. PROC add(i, set:PTR TO tree)
  13.   IF set=NIL
  14.     RETURN new_set(i)
  15.   ELSE
  16.     IF i<set.data
  17.       set.left:=add(i, set.left)
  18.     ELSEIF i>set.data
  19.       set.right:=add(i, set.right)
  20.     ENDIF
  21.     RETURN set
  22.   ENDIF
  23. ENDPROC
  24.  
  25. PROC show(set:PTR TO tree)
  26.   IF set<>NIL
  27.     show(set.left)
  28.     WriteF('\d ', set.data)
  29.     show(set.right)
  30.   ENDIF
  31. ENDPROC
  32.  
  33. PROC main() HANDLE
  34.   DEF s, i, j
  35.   Rnd(-999999)    /* Initialise seed */
  36.   s:=new_set(10)  /* Initialise set s to contain the number 10 */
  37.   WriteF('Input:\n')
  38.   FOR i:=1 TO 50  /* Generate 50 random numbers and add them to set s */
  39.     j:=Rnd(100)
  40.     add(j, s)
  41.     WriteF('\d ',j)
  42.   ENDFOR
  43.   WriteF('\nOutput:\n')
  44.   show(s)         /* Show the contents of the (sorted) set s */
  45.   WriteF('\n')
  46. EXCEPT
  47.   IF exception="NEW" THEN WriteF('Ran out of memory\n')
  48. ENDPROC
  49.